﻿//struct ListNode 
//  {
//      int val;
//      struct ListNode *next;
//  };
//struct ListNode* getIntersectionNode(struct ListNode* headA, struct ListNode* headB) {
//    struct ListNode* p = headB;
//    while (headA)
//    {
//        if (headB && headB == headA)
//            return headA;
//        if (!headB)
//        {
//            headA = headA->next;
//            headB = p;
//            continue;
//        }
//        headB = headB->next;
//    }
//    return 0;
//}

//bool在C语言中的引用
//#include<stdbool.h>//bool类型的头文件
//#include<stdio.h>
//int main()
//{
//	//bool的占一个字节，在系统中其定义的值只能为1或0
//	bool a = -7;//a的值为1
//	bool b = 0;//b的值为0
//	fprintf(stdout, "a = %d b = %d", a, b);
//	return 0;
//}

/*
  Definition for singly-linked list.
  struct ListNode {
      int val;
      struct ListNode *next;
  };
*/
//bool hasCycle(struct ListNode* head) {
//    struct ListNode* p = head, * head1 = head;
//    if (!head)
//        return false;
//    if (p->next == head)
//        return true;
//    p = p->next;
//    while (p && p->next != head)
//    {
//        if (p == head)
//        {
//            p = p->next;
//            head = head1;
//        }
//        else
//        {
//            head = head->next;
//        }
//    }
//    if (!p)
//        return false;
//    else
//        return true;
//}
//struct ListNode* detectCycle(struct ListNode* head) {
//    struct ListNode* p = head, * head1 = head;
//    if (!head)
//        return 0;
//    if (p->next == head)
//        return head;
//    p = p->next;
//    while (p && p->next != head)
//    {
//        if (p == head)
//        {
//            p = p->next;
//            head = head1;
//        }
//        else
//        {
//            head = head->next;
//        }
//    }
//    if (!p)
//        return 0;
//    else
//        return head;
//}